<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>文章列表</title>
    <style type="text/css">
        #table table {
            width: 100%;
            font-size: 14px;
            border: 1px solid #eee
        }

        #table {
            padding: 0 10px;
        }

        table thead th {
            background: #f5f5f5;
            padding: 10px;
            text-align: left;
        }

        table tbody td {
            padding: 10px;
            text-align: left;
            border-bottom: 1px solid #eee;
            border-right: 1px solid #eee;
        }

        table tbody td span {
            margin: 0 10px;
            cursor: pointer;
        }

        .delete {
            color: red;
        }

        .edit {
            color: #008cd5;
        }

        .add {
            border: 1px solid #eee;
            margin: 10px 0;
            padding: 15px;
            text-align: center;
        }

        input {
            border: 1px solid #ccc;
            padding: 5px;
            border-radius: 3px;
            margin-right: 15px;
        }

        button {
            background: #008cd5;
            border: 0;
            padding: 4px 15px;
            border-radius: 3px;
            color: #fff;
        }

        #mask {
            background: rgba(0, 0, 0, .5);
            width: 100%;
            height: 100%;
            position: fixed;
            z-index: 4;
            top: 0;
            left: 0;
            display: none;
        }

        .mask {
            width: 300px;
            height: 250px;
            background: rgba(255, 255, 255, 1);
            position: absolute;
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
            margin: auto;
            z-index: 47;
            border-radius: 5px;
        }

        .title {
            padding: 10px;
            border-bottom: 1px solid #eee;
        }

        .title span {
            float: right;
            cursor: pointer;
        }

        .content {
            padding: 10px;
        }

        .content input {
            width: 270px;
            margin-bottom: 15px;
        }
    </style>
</head>

<body>
    <div id="table">
        <div class="add">
            <input type="text" name="title" value="" placeholder="标题" />
            <input type="text" name="user" value="" placeholder="发布人" />
            <input type="date" name="date" value="" placeholder="发布时间" />
            <button>新增</button>
        </div>
        <table cellpadding="0" cellspacing="0">
            <thead>
                <tr>
                    <th>序号</th>
                    <th>标题</th>
                    <th>发布人</th>
                    <th>发布时间</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <!-- 需要在这里输出表格数据 -->

            </tbody>
        </table>
        <div id="mask">
            <div class="mask">
                <div class="title"> 编辑 <span> X </span>
                </div>
                <div class="content">
                    <input type="text" name="title" value="" class="changetitle" placeholder="标题" />
                    <input type="text" name="user" value=""  class="changesuer" placeholder="发布人" />
                    <input type="date" name="date" value="" class="changedata" placeholder="发布时间" />
                    <button class="change">更新</button>
                    <button class="cancel">取消</button>
                </div>
            </div>
        </div>
    </div>
    <script type="text/javascript">
        const arr=JSON.parse(window.localStorage.getItem('arr')) || [];
        var addDate,addUser,addText,submit,tbody,mask,change;
        var changeUser,changeData,changetext;

        init();

        function init(){
            mask=document.querySelector('#mask');
            mask.addEventListener('click',maskHandel);
            change=document.querySelector('.mask .change');
            tbody=document.querySelector('tbody');
            tbody.addEventListener('click',clickhanderl);
            add=document.querySelector('.add');
            changeData=document.querySelector('.changedata');
            changeUser=document.querySelector('.changesuer');
            changetext=document.querySelector('.changetitle');
            addText=document.querySelector('input[name=title]');
            addUser=document.querySelector('input[name=user]');
            addDate=document.querySelector('input[name=date]');
            submit=document.querySelector('.add button');
            submit.addEventListener('click', addclickhanderl);
            setPage();
        }

        function addclickhanderl(e){
            let titleval = addText.value;
            let userval = addUser.value;
            let dataval = addDate.value;
            if (!titleval || !userval || !dataval){
                alert('请输入数据后再增加');
                return;
            } else {
                // 创建一个一样的数据
                const info={
                    title: titleval,
                    user: userval,
                    data: dataval
                }
                // 把数据放入 arr 数组
                arr.push(info);
            }
            //渲染页面
            setPage();
        } 
        //渲染页面函数
        function setPage(){
            console.log(tbody);
            if (arr.length===0){
                tbody.innerHTML='<tr><td colspan="7">没有匹配数据</td></tr>';
                return;
            }
        let str = '';
        arr.forEach(function(item,key){
        str+= `
        <tr>
            <td>${key}</td> 
            <td>${item.title}</td>
            <td>${item.user}</td>
            <td>${item.data}</td>
            <td><button name="change" index="${key}">编辑</button>  <button name="del" index="${key}">删除</button></td>
        </tr>
        `
        })

        tbody.innerHTML=str;

        window.localStorage.setItem('arr',JSON.stringify(arr));
        }
        // 删除修改
        function clickhanderl(e){
            if(e.target.getAttribute('name')==='del'){
            if (!confirm('您确定要删除吗?')) return;

                arr.splice(Number(e.target.getAttribute('index')), 1);

                setPage();
            } else if(e.target.getAttribute('name')==='change'){
                mask.style.display='flex';
                // 给 变量赋值 存储 修改标签 对应的索引下标
                // console.log(arr);
                index=Number(e.target.getAttribute('index'));
                // console.log(arr[index]);
                // 给修改框的value 赋值arr里的对应数据

                changetext.value=arr[index].title;
                changeUser.value=arr[index].user;
                changeData.value=arr[index].data;
            }
        }
        function maskHandel(e){
            if(e.target.nodeName==='SPAN' || e.target.getAttribute('class')==='cancel'){
                mask.style.display='none';
            }else if(e.target.getAttribute('class')==='change'){

                if (confirm('您确定要修改吗?')){
                    let newuser=changeUser.value;
                    let newdata=changeData.value;
                    let newtitle=changetext.value;
                    
                    arr[index].user=newuser;
                    arr[index].title=newtitle;
                    arr[index].data=newdata;
                    if(!newdata || !newuser || !newtitle){
                        alert('请输入数据后再增加');
                        return;
                    }
                    setPage();
                    mask.style.display='none';
                }
            }
        }

    </script>
</body>

</html>